// // vue.config.js
// const path =  require('path');

// const CompressionWebpackPlugin = require("compression-webpack-plugin"); // 开启gzip压缩， 按需引用
// const productionGzipExtensions = /\.(js|css|json|txt|html|ico|svg)(\?.*)?$/i; // 开启gzip压缩， 按需写入
// const BundleAnalyzerPlugin = require("webpack-bundle-analyzer").BundleAnalyzerPlugin; // 打包分析

// const IS_PROD = ['production', 'prod'].includes(process.env.NODE_ENV);
// const resolve = (dir) => path.join(__dirname, dir);
// module.exports = {
//     publicPath: process.env.NODE_ENV === 'production' ? '/site/vue-demo/' : '/',  // 公共路径
//     indexPath: 'index.html' , // 相对于打包路径index.html的路径
//     outputDir: process.env.outputDir || 'dist', // 'dist', 生产环境构建文件的目录
//     assetsDir: 'static', // 相对于outputDir的静态资源(js、css、img、fonts)目录
//     lintOnSave: false, // 是否在开发环境下通过 eslint-loader 在每次保存时 lint 代码
//     runtimeCompiler: true, // 是否使用包含运行时编译器的 Vue 构建版本
//     productionSourceMap: !IS_PROD, // 生产环境的 source map
//     parallel: require("os").cpus().length > 1, // 是否为 Babel 或 TypeScript 使用 thread-loader。该选项在系统的 CPU 有多于一个内核时自动启用，仅作用于生产构建。
//     pwa: {}, // 向 PWA 插件传递选项。
//     chainWebpack: config => {
//         config.resolve.symlinks(true); // 修复热更新失效
//         // 如果使用多页面打包，使用vue inspect --plugins查看html是否在结果数组中
//         config.plugin("html").tap(args => {
//             // 修复 Lazy loading routes Error
//             args[0].chunksSortMode = "none";
//             return args;
//         });
//         config.resolve.alias // 添加别名
//             .set('@', resolve('src'))
//             .set('@assets', resolve('src/assets'))
//             .set('@components', resolve('src/components'))
//             .set('@views', resolve('src/views'))
//             .set('@store', resolve('src/store'));
//         // 压缩图片
//         // 需要 npm i -D image-webpack-loader
//         config.module
//             .rule("images")
//             .use("image-webpack-loader")
//             .loader("image-webpack-loader")
//             .options({
//                 mozjpeg: { progressive: true, quality: 65 },
//                 optipng: { enabled: false },
//                 pngquant: { quality: [0.65, 0.9], speed: 4 },
//                 gifsicle: { interlaced: false },
//                 webp: { quality: 75 }
//             });
//         // 打包分析
//         // 打包之后自动生成一个名叫report.html文件(可忽视)
//         if (IS_PROD) {
//             config.plugin("webpack-report").use(BundleAnalyzerPlugin, [
//                 {
//                     analyzerMode: "static"
//                 }
//             ]);
//         }
//     },
//     configureWebpack: config => {
//         // 开启 gzip 压缩
//         // 需要 npm i -D compression-webpack-plugin
//         const plugins = [];
//         if (IS_PROD) {
//             plugins.push(
//                 new CompressionWebpackPlugin({
//                     filename: "[path].gz[query]",
//                     algorithm: "gzip",
//                     test: productionGzipExtensions,
//                     threshold: 10240,
//                     minRatio: 0.8
//                 })
//             );
//         }
//         config.plugins = [...config.plugins, ...plugins];
//     },
//     css: {
//         extract: IS_PROD,
//         requireModuleExtension: false,// 去掉文件名中的 .module
//         loaderOptions: {
//                 // 给 less-loader 传递 Less.js 相关选项
//                 less: {
//                     // `globalVars` 定义全局对象，可加入全局变量
//                     globalVars: {
//                         primary: '#333'
//                     }
//                 }
//         }
//     },
//     devServer: {
//             overlay: { // 让浏览器 overlay 同时显示警告和错误
//               warnings: true,
//               errors: true
//             },
//             host: "localhost",
//             port: 8080, // 端口号
//             https: false, // https:{type:Boolean}
//             open: false, //配置自动启动浏览器
//             hotOnly: true, // 热更新
//             // proxy: 'http://localhost:8080'   // 配置跨域处理,只有一个代理
//             proxy: { //配置多个跨域
//                 "/api": {
//                     target: "http://172.11.11.11:7071",
//                     changeOrigin: true,
//                     // ws: true,//websocket支持
//                     secure: false,
//                     pathRewrite: {
//                         "^/api": "/"
//                     }
//                 },
//                 "/api2": {
//                     target: "http://172.12.12.12:2018",
//                     changeOrigin: true,
//                     //ws: true,//websocket支持
//                     secure: false,
//                     pathRewrite: {
//                         "^/api2": "/"
//                     }
//                 },
//             }
//         }
// }
// const path = require('path')
// const resolve = (dir) => path.join(__dirname, dir)
const CompressionPlugin = require('compression-webpack-plugin')
module.exports = {
  productionSourceMap: false, // 生产环境是否生成 SourceMap
  devServer: {
    hot: true,
    open: true
  },
  chainWebpack: config => {
    // const imagesRule = config.module.rule('images')
    // imagesRule
    //   .use('image-webpack-loader')
    //   .loader('image-webpack-loader')
    //   .options({
    //     bypassOnDebug: true
    //   })
    //   .end()
    config.plugin('compressionPlugin').use(
      new CompressionPlugin({
        algorithm: 'gzip', // 使用gzip压缩
        test: /\.js$|\.html$|\.css$/, // 匹配文件名
        filename: '[path].gz[query]', // 压缩后的文件名(保持原文件名，后缀加.gz)
        minRatio: 1, // 压缩率小于1才会压缩
        threshold: 10240, // 对超过10k的数据压缩
        deleteOriginalAssets: false // 是否删除未压缩的源文件，谨慎设置，如果希望提供非gzip的资源，可不设置或者设置为false（比如删除打包后的gz后还可以加载到原始资源文件）
      })
    )
  }
}

